﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;
using System.Data;

namespace Sispe.Repository
{
    public class ContratoRepository:MasterRepository, IContratoRepository
    {
        public List<CONTRATO> GetAllFromContratos()
        {
            var query = from c in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        select c;
            return query.ToList();
        }

        public List<CONTRATO> GetFromContratoByTrabajador(string descripcion)
        {
            var query = from s in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        select s;
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                query = from s in context.CONTRATOS
                        where s.TRABAJADOR.PERSONA.Dni.Contains(descripcion)
                        select s;
            }
            return query.ToList();
        }

        public CONTRATO GetFromContratoById(int id)
        {
            var query = from s in context.CONTRATOS
                        where s.IdContrato.Equals(id)
                        select s;
            return query.SingleOrDefault();
        }

        public bool ExisteDuplicidad(string descripcion, string codigo, int id)
        {
            var query = from s in context.CONTRATOS
                        where s.TRABAJADOR.PERSONA.ApePaterno.CompareTo(descripcion) == 0 &&
                                  s.TRABAJADOR.PERSONA.Nombres.CompareTo(codigo) == 0 &&
                                   s.IdContrato != id
                        select s;
            return query.Any();
        }

        public void AddContrato(CONTRATO contrato)
        {
            contrato.ENTIDAD_PRESTADORA_SALUD = null;
            contrato.ESPECIALIDAD = null;
            contrato.MOTIVO_FIN_PERIODO = null;
            contrato.PERIODO_PAGO = null;
            contrato.PROYECTO = null;
            contrato.REGIMEN_LABORAL = null;
            contrato.REGIMEN_SALUD = null;
            contrato.TIPO_CONTRATO = null;
            contrato.TIPO_PAGO = null;
            contrato.TIPO_PERSONAL = null;
            contrato.TIPO_TRABAJADOR = null;
            contrato.TRABAJADOR = null;
            contrato.AREA_CONTRATO = null;
            context.CONTRATOS.Add(contrato);
            context.SaveChanges();

        }

        public void UpdateContrato(CONTRATO contrato)
        {
            contrato.ENTIDAD_PRESTADORA_SALUD = null;
            contrato.ESPECIALIDAD = null;
            contrato.MOTIVO_FIN_PERIODO = null;
            contrato.PERIODO_PAGO = null;
            contrato.PROYECTO = null;
            contrato.REGIMEN_LABORAL = null;
            contrato.REGIMEN_SALUD = null;
            contrato.TIPO_CONTRATO = null;
            contrato.TIPO_PAGO = null;
            contrato.TIPO_PERSONAL = null;
            contrato.TIPO_TRABAJADOR = null;
            contrato.TRABAJADOR = null;
            contrato.AREA_CONTRATO = null;
            context.Entry(contrato).State = System.Data.EntityState.Modified;
            context.SaveChanges();
        }

        public void RemoveContrato(int id)
        {
            var existe = context.CONTRATOS.Find(id);

            if (existe != null)
            {
                context.CONTRATOS.Remove(existe);
                context.SaveChanges();
            }
        }


        public List<CONTRATO> GetFromContratoVigenteByTrabajador(string descripcion)
        {
            if (descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.TRABAJADOR.PERSONA.ApeMaterno.ToUpper().Contains(descripcion.ToUpper()) || c.TRABAJADOR.PERSONA.ApePaterno.ToUpper().Contains(descripcion.ToUpper())
                                        || c.TRABAJADOR.PERSONA.Nombres.ToUpper().Contains(descripcion.ToUpper())) && c.FechaTermino >= System.DateTime.Now
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.FechaTermino >= System.DateTime.Now
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllFromContratosVigentes()
        {
            var query = from c in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where c.FechaTermino >= System.DateTime.Now
                        select c;
            return query.ToList();
        }


        public List<CONTRATO> GetAllFromContratoByFecha(int fecIni, int fecFin)
        {
            var query = from c in context.CONTRATOS
                         .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where c.FechaTermino.Month >= fecIni && c.FechaTermino.Month < fecFin
                        select c;
            return query.ToList();
        }


        public void TerminoContrato(CONTRATO contrato)
        {
            contrato.ENTIDAD_PRESTADORA_SALUD = null;
            contrato.ESPECIALIDAD = null;
            contrato.MOTIVO_FIN_PERIODO = null;
            contrato.PERIODO_PAGO = null;
            contrato.PROYECTO = null;
            contrato.REGIMEN_LABORAL = null;
            contrato.REGIMEN_SALUD = null;
            contrato.TIPO_CONTRATO = null;
            contrato.TIPO_PAGO = null;
            contrato.TIPO_PERSONAL = null;
            contrato.TIPO_TRABAJADOR = null;
            contrato.TRABAJADOR = null;
            contrato.AREA_CONTRATO = null;

            context.Entry(contrato).State = System.Data.EntityState.Modified;
            context.SaveChanges();
        }


        public List<CONTRATO> GetFromContratoByIdTipoTrabajador()
        {
            var query = from c in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where (c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 || c.TIPO_TRABAJADOR.IdTipoTrabajador == 2)
                        select c;

            return query.ToList();
        }




        public List<CONTRATO> GetAllFromContratoByObreros()
        {
            var query = from c in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where (c.TIPO_TRABAJADOR.IdTipoTrabajador == 2)
                        select c;

            return query.ToList();
        }


        public List<CONTRATO> GetAllContratosVigentesByObreros()
        {
            var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                        where (c.TIPO_TRABAJADOR.IdTipoTrabajador == 2  && c.FechaTermino >= System.DateTime.Now)
                        select c;
            return query.ToList();
        }


        public List<CONTRATO> GetAllContratosVigentesToObrerosByTrabajador(string descripcion)
        {
            if (descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.TRABAJADOR.PERSONA.ApeMaterno.ToUpper().Contains(descripcion.ToUpper()) || c.TRABAJADOR.PERSONA.ApePaterno.ToUpper().Contains(descripcion.ToUpper())
                                        || c.TRABAJADOR.PERSONA.Nombres.ToUpper().Contains(descripcion.ToUpper())) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2  && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                        
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 2  && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllContratosToObrerosByTrabajador(string descripcion)
        {
            int[] ints1 = { 1, 2, 3 };
            int[] ints2 = { 3, 4, 5 };
            IEnumerable<int> union = ints1.Union(ints2);


            if (descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                           where c.TRABAJADOR.PERSONA.Dni.ToUpper().Contains(descripcion.ToUpper()) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 && c.FechaTermino >= System.DateTime.Now 
                            
                           select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 2
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllFromContratoByStaff()
        {
            var query = from c in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where (c.TIPO_TRABAJADOR.IdTipoTrabajador == 1)
                        select c;

            return query.ToList();
        }

        public List<CONTRATO> GetAllContratosVigentesByStaff()
        {
            var query = from c in context.CONTRATOS
                                .Include("ENTIDAD_PRESTADORA_SALUD")
                               .Include("ESPECIALIDAD")
                               .Include("MOTIVO_FIN_PERIODO")
                               .Include("PERIODO_PAGO")
                               .Include("PROYECTO")
                               .Include("REGIMEN_LABORAL")
                               .Include("REGIMEN_SALUD")
                               .Include("TIPO_CONTRATO")
                               .Include("TIPO_PAGO")
                               .Include("TIPO_PERSONAL")
                               .Include("TIPO_TRABAJADOR")
                               .Include("TRABAJADOR.PERSONA")
                               .Include("AREA_CONTRATO")
                        where (c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 && c.FechaTermino >= System.DateTime.Now)
                        select c;
            return query.ToList();
        }

        public List<CONTRATO> GetAllContratosVigentesToStaffByTrabajador(string descripcion)
        {
            if (descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.TRABAJADOR.PERSONA.ApeMaterno.ToUpper().Contains(descripcion.ToUpper()) || c.TRABAJADOR.PERSONA.ApePaterno.ToUpper().Contains(descripcion.ToUpper())
                                        || c.TRABAJADOR.PERSONA.Nombres.ToUpper().Contains(descripcion.ToUpper()) || c.TRABAJADOR.PERSONA.Dni.ToUpper().Contains(descripcion.ToUpper())) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 1
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosToStaffByTrabajador(string descripcion)
        {
            if (descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.TRABAJADOR.PERSONA.ApeMaterno.ToUpper().Contains(descripcion.ToUpper()) || c.TRABAJADOR.PERSONA.ApePaterno.ToUpper().Contains(descripcion.ToUpper())
                                        || c.TRABAJADOR.PERSONA.Nombres.ToUpper().Contains(descripcion.ToUpper()) || c.TRABAJADOR.PERSONA.Dni.ToUpper().Contains(descripcion.ToUpper())) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 1
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllFromContratoToStaffByFecha(int fecIni, int fecFin)
        {
            var query = from c in context.CONTRATOS
                         .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where c.FechaTermino.Month >= fecIni && c.FechaTermino.Month < fecFin && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1
                        select c;
            return query.ToList();
        }


        public List<CONTRATO> GetAllFromContratoToObreroByFecha(int fecIni, int fecFin)
        {
            var query = from c in context.CONTRATOS
                         .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                        where c.FechaTermino.Month >= fecIni && c.FechaTermino.Month < fecFin && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2
                        select c;
            return query.ToList();
        }


        public List<CONTRATO> GetAllContratosToObrerosByEspecialidad(string descripcion)
        {

            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.ESPECIALIDAD.Descripcion.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosToObrerosByProyecto(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.PROYECTO.NombreProyecto.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosToStaffByEspecialidad(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.ESPECIALIDAD.Descripcion.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 1
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosToStaffByProyecto(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.PROYECTO.NombreProyecto.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 1
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllContratosVigentesToObreroByEspecialidad(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.ESPECIALIDAD.Descripcion.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 && c.FechaTermino >= System.DateTime.Now)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosVigentesToObreroByProyecto(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.PROYECTO.NombreProyecto.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 && c.FechaTermino >= System.DateTime.Now)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 2 && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosVigentesToStaffByEspecialidad(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.ESPECIALIDAD.Descripcion.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 && c.FechaTermino >= System.DateTime.Now) 
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratosVigentesToStaffByProyecto(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.PROYECTO.NombreProyecto.ToUpper().Contains(descripcion) && c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 && c.FechaTermino >= System.DateTime.Now)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                        .Include("ESPECIALIDAD")
                        .Include("MOTIVO_FIN_PERIODO")
                        .Include("PERIODO_PAGO")
                        .Include("PROYECTO")
                        .Include("REGIMEN_LABORAL")
                        .Include("REGIMEN_SALUD")
                        .Include("TIPO_CONTRATO")
                        .Include("TIPO_PAGO")
                        .Include("TIPO_PERSONAL")
                        .Include("TIPO_TRABAJADOR")
                        .Include("TRABAJADOR.PERSONA")
                        .Include("AREA_CONTRATO")
                            where c.TIPO_TRABAJADOR.IdTipoTrabajador == 1 && c.FechaTermino >= System.DateTime.Now 
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllContratoByProyecto(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.PROYECTO.NombreProyecto.ToUpper().Contains(descripcion))
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratoByEspecialidad(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                            where (c.ESPECIALIDAD.Descripcion.ToUpper().Contains(descripcion) )
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                            where c.FechaTermino >= System.DateTime.Now
                            select c;
                return query.ToList();
            }
        }


        public List<CONTRATO> GetAllContratoVigenteByProyecto(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                            where (c.PROYECTO.NombreProyecto.ToUpper().Contains(descripcion) && c.FechaTermino >= System.DateTime.Now)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                            where c.FechaTermino >= System.DateTime.Now
                            select c;
                return query.ToList();
            }
        }

        public List<CONTRATO> GetAllContratoVigenteByEspecialidad(string descripcion)
        {
            if (descripcion != null && descripcion != string.Empty && descripcion != "")
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                .Include("ESPECIALIDAD")
                                .Include("MOTIVO_FIN_PERIODO")
                                .Include("PERIODO_PAGO")
                                .Include("PROYECTO")
                                .Include("REGIMEN_LABORAL")
                                .Include("REGIMEN_SALUD")
                                .Include("TIPO_CONTRATO")
                                .Include("TIPO_PAGO")
                                .Include("TIPO_PERSONAL")
                                .Include("TIPO_TRABAJADOR")
                                .Include("TRABAJADOR.PERSONA")
                                .Include("AREA_CONTRATO")
                            where (c.ESPECIALIDAD.Descripcion.ToUpper().Contains(descripcion) && c.FechaTermino >= System.DateTime.Now)
                            select c;
                return query.ToList();
            }
            else
            {
                var query = from c in context.CONTRATOS
                                 .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                            where c.FechaTermino >= System.DateTime.Now
                            select c;
                return query.ToList();
            }
        }

        
        public List<CONTRATO> GetFromContratobyRangoFechas(DateTime? fec1, DateTime? fec2)
        {
            var query = from h in context.CONTRATOS
                        .Include("ENTIDAD_PRESTADORA_SALUD")
                                 .Include("ESPECIALIDAD")
                                 .Include("MOTIVO_FIN_PERIODO")
                                 .Include("PERIODO_PAGO")
                                 .Include("PROYECTO")
                                 .Include("REGIMEN_LABORAL")
                                 .Include("REGIMEN_SALUD")
                                 .Include("TIPO_CONTRATO")
                                 .Include("TIPO_PAGO")
                                 .Include("TIPO_PERSONAL")
                                 .Include("TIPO_TRABAJADOR")
                                 .Include("TRABAJADOR.PERSONA")
                                 .Include("AREA_CONTRATO")
                        select h;

            if (fec1 != null && fec2 != null)//rango de fechas
            {
                query = from h in query
                        where h.FechaInicio >= fec1.Value && h.FechaInicio <= fec2.Value
                        select h;
                ////ObjectContext.Refresh(RefreshMode.StoreWins, query);

            }
            return query.ToList();
        }


        public List<CONTRATO> GetFromContratosPorVencer()
        {
            DateTime dt = DateTime.Now.Date.AddDays(15);
            DateTime dtmenos = DateTime.Now.Date.AddDays(-15);

            var query = from c in context.CONTRATOS
                            .Include("ESPECIALIDAD")
                            .Include("PROYECTO")
                            .Include("TIPO_TRABAJADOR")
                            .Include("TRABAJADOR.PERSONA")
                            .Include("TRABAJADOR")
                        where c.FechaTermino <= dt && c.FechaTermino >= dtmenos
                        select c;

            //ObjectContext.Refresh(RefreshMode.StoreWins, query);
            return query.ToList();
        }

        public CONTRATO GetFromContratosPorVencerByIdTrabajador(int IdTrabajador)
        {
            DateTime dt = DateTime.Now.Date.AddDays(15);
            DateTime dtmenos = DateTime.Now.Date.AddDays(-15);

            var query = from c in context.CONTRATOS
                            .Include("ESPECIALIDAD")
                            .Include("PROYECTO")
                            .Include("TIPO_TRABAJADOR")
                            .Include("TRABAJADOR.PERSONA")
                            .Include("TRABAJADOR")
                            .Include("PROYECTO.HORARIO_PROYECTO")
                        where c.FechaTermino <= dt && c.FechaTermino >= dtmenos && c.IdTrabajador.Equals(IdTrabajador)
                        select c;

            //ObjectContext.Refresh(RefreshMode.StoreWins, query);
            return query.SingleOrDefault();
        }

        public List<CONTRATO> GetFromContratosEnLiquidacion()
        {
            var query = from c in context.CONTRATOS
                            .Include("PROYECTO")
                            .Include("TIPO_TRABAJADOR")
                            .Include("TRABAJADOR.PERSONA")
                            .Include("TRABAJADOR")
                        where c.Liquidado == true
                        select c;

            //ObjectContext.Refresh(RefreshMode.StoreWins, query);
            return query.ToList();
        }
    }
}
